<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // apply传入参数是数组会被解构
        // call传入参数是用逗号分隔
        // 函数的实参列表arguements通过apply
        var obj1 = {
            nickName: 'qianguyihao',
            age: 28,
        };

        function fn1(a, b) {
            console.log(this);
            console.log(this.nickName);
            console.log(a, b);
        }

        fn1.apply(obj1, ['hello', 'world']); // 先将 this 指向 obj1，然后执行 fn1() 函数
        const arr1 = [3, 7, 10, 8];

        // 下面这一行代码的目的，无需改变 this 指向，所以：第一个参数填 null，或者填 Math，或者填 this 都可以。严格模式中，不让填null。
        const maxValue = Math.max.apply(Math, arr1); // 求数组 arr1 中元素的最大值
        console.log(maxValue);

        const minValue = Math.min.apply(Math, arr1); // 求数组 arr1 中元素的最小值
        console.log(minValue);
    </script>
</body>

</html>